home *** CD-ROM | disk | FTP | other *** search
/ Gekkan Dennou Club 147 / Gekkan Dennou Club - 2000.8 Vol. 147 (Japan).7z / Gekkan Dennou Club - 2000.8 Vol. 147 (Japan) (Track 1).bin / tools / ex68v209 / ex68v209.lzh / X_WINDRV.LZH / WINDRV.S < prev    next >
Text File  |  1999-01-01  |  3KB  |  191 lines

  1.  
  2. *
  3. * EX68用 windows disk driver
  4. *
  5. * device = windrv.sys を config.sysに登録する
  6. *
  7. * as windrv.s
  8. * lk /owindrv.sys windrv
  9. *
  10.  
  11.     .include doscall.mac
  12.     .text
  13.  
  14. winport    =    $e9f000
  15. reqlen    =    0
  16. unitcd    =    1
  17. comcod    =    2
  18. errlow    =    3
  19. erhigh    =    4
  20. *init
  21. mxunit    =    13
  22. devend    =    14
  23. bdevno    =    22
  24.  
  25. dsktbl:
  26.     dc.l    -1
  27.     dc.w    $2000
  28.     dc.l    dskstr
  29.     dc.l    dskent
  30.     dc.b    1,'WINDRV '
  31. dskreq:
  32.     dc.l    0
  33. dskjmp:
  34.     dc.l    init
  35.     dc.l    dir_search
  36.     dc.l    dir_make
  37.     dc.l    dir_kill
  38.  
  39.     dc.l    file_rename
  40.     dc.l    file_kill
  41.     dc.l    file_atr
  42.     dc.l    files
  43.  
  44.     dc.l    nfiles
  45.     dc.l    file_make
  46.     dc.l    file_open
  47.     dc.l    file_close
  48.     
  49.     dc.l    file_read
  50.     dc.l    file_write
  51.     dc.l    file_seek
  52.     dc.l    file_time
  53.     
  54.     dc.l    drv_size
  55.     dc.l    drv_atr
  56.     dc.l    get_dpb
  57.     dc.l    ioctrl_read
  58.     
  59.     dc.l    ioctrl_write
  60.     dc.l    ioctrl_control
  61.     dc.l    abort
  62.     dc.l    media_change
  63.     
  64.     dc.l    check_lock
  65.  
  66. dskstr:
  67.     move.l    a5,dskreq
  68.     rts
  69.  
  70. dskent:
  71.     movem.l    d1/a4-a5,-(sp)
  72.     move.l    dskreq,a5
  73.     lea    dskjmp,a4
  74. entry:
  75.     clr.l    d0
  76.     move.b    comcod(a5),d0
  77.     cmp.b    #$40,d0
  78.     bcs    no_remote
  79.     and.w    #$1f,d0
  80.     add.w    d0,d0
  81.     add.w    d0,d0
  82.     move.l    (a4,d0.w),a4
  83.     jsr    (a4)
  84.     move.b    d0,errlow(a5)
  85.     lsr.w    #8,d0
  86.     move.b    d0,erhigh(a5)
  87.     movem.l    (sp)+,d1/a4-a5
  88.     rts
  89. no_remote:
  90.     movem.l    (sp)+,d1/a4-a5
  91.     rts
  92.  
  93. dir_search:
  94. dir_make:
  95. dir_kill:
  96. file_rename:
  97. file_kill:
  98. file_atr:
  99. files:
  100. nfiles:
  101. file_make:
  102. file_open:
  103. file_close:
  104. file_read:
  105. file_write:
  106. file_seek:
  107. file_time:
  108. drv_size:
  109. drv_atr:
  110. get_dpb:
  111. ioctrl_read:
  112. ioctrl_write:
  113. ioctrl_control:
  114. abort:
  115. media_change:
  116. check_lock:
  117.     moveq    #0,d0
  118.     move.b    comcod(a5),d0
  119.     move.b    d0,winport
  120.     rts
  121.  
  122. init:
  123.     movem.l    d1-d7/a0-a6,-(sp)
  124.     dc.w    _VERNUM            ;humanバージョンチェック
  125.     cmp.l    #$36380302,d0
  126. *    bcs    ver_support
  127.     cmp.b    #'W',winport        ;ex68のサポートをチェックする
  128.     bne    no_support
  129.     
  130.     move.b    #1,mxunit(a5)
  131. *    move.l    #allend,devend(a5)
  132.     move.l    #init,devend(a5)
  133.     
  134.     moveq    #0,d0
  135.     move.b    comcod(a5),d0
  136.     move.b    d0,winport
  137.  
  138.     pea    mes
  139.     dc.w    _PRINT
  140.     addq.l    #4,sp
  141.  
  142.     moveq    #0,d7
  143.     move.b    mxunit(a5),d7
  144.     subq    #1,d7
  145.     bmi    no_mes
  146.     moveq    #0,d1
  147. mes_loop:
  148.     movem.l    d1/d7,-(sp)
  149.     move.b    bdevno(a5),d0
  150.     add    d1,d0
  151.     add.b    #'A',d0
  152.     move.b    d0,drvmes
  153.     pea    mes2
  154.     dc.w    _PRINT
  155.     addq.l    #4,sp
  156.     movem.l    (sp)+,d1/d7
  157.     addq    #1,d1
  158.     dbra    d7,mes_loop
  159. no_mes:
  160.     movem.l    (sp)+,d1-d7/a0-a6
  161.     clr.w    d0
  162.     rts
  163.  
  164. ver_support:
  165.     pea    m_ver_sup
  166.     bra    prt_err
  167. no_support:
  168.     pea    m_no_sup
  169.     bra    prt_err
  170. prt_err:
  171.     dc.w    _PRINT
  172.     addq.l    #4,sp
  173.     movem.l    (sp)+,d1-d7/a0-a6
  174.     move.w    #$700d,d0
  175.     rts
  176.  
  177. mes:
  178.     dc.b    13,10
  179.     dc.b    'windows disk driver for EX68 version 0.1',13,10,0
  180. mes2:
  181.     dc.b    'win drive ('
  182. drvmes:
  183.     dc.b    'C)',13,10,0
  184.  
  185. m_ver_sup:
  186.     dc.b    'Human68k version 3.02以前では使えません。',13,10,0
  187. m_no_sup:
  188.     dc.b    'EX68上でのみ使用できます。',13,10,0
  189.     .even
  190. allend:
  191.